# 查找第5555行
# -n 关闭默认输出
# p 输出
sed -n '5555p' /etc/services

# 输出最后一行
sed -n '$p' /etc/services

# 输出1400到1410行
sed -n '1400,1410p' /etc/services

# 输出11170到最后一行
sed -n '11170,$p' /etc/services

# 使用正则匹配
sed -n '/domiq/p' /etc/services
# 匹配以LDM结尾的记录
sed -n '/LDM$/p' /etc/services
# r 使用扩展正则，查询包含uis或者asa的记录
sed -nr '/uis|asa/p' /etc/services


# 案例一

# 查看前10行
head -n 1 /var/log/cloud-init.log

# 查看倒数10行
tail -10 /var/log/cloud-init.log

# 查看main.py的记录的记录行数
sed -n '/main.py/p' /var/log/cloud-init.log | wc -l

# 查看指定时间段的内容
sed -n '/2022-05-03 12:47:05/,/2022-05-03 12:47:06/p' /var/log/cloud-init.log


# 删除 d，只需要把输出的p改为d即可完成删除
# 删除第二行
# -i 修改模式，不加则只会打印输出
sed -i '2d' /var/log/assaes.log

# 删除空行和#注释行
sed -i '/^#/d;/^$/d' /var/log/assaes.log

# 不显示空行和注释行
sed -nr '/^$|#/!p' /var/log/assaes.log


# 数据修改
# a 追加数据
# i 插入
# c 替换

# 在第3行加入数据 9998888
sed -i '3a 9998888' assaes.log

# 在第5行加入数据 110110
sed -i '5i 110110' assaes.log

# 替换第11行 oooooo
sed -i '11c oooooo' assaes.log


# 案例：向配置文件中写入配置

# 方法一：
cat >>config.cfg<<'EOF'
# 是否开启
enable true
# 日志最大
logMaxSize 1024kb
# 日志过期时间
expire 7d
EOF

# 方法二：
sed -i '$a enable true\nlogMaxSize 1024kb\nexpire 7d\n' config.cfg


# s替换，格式 s###g
# 三个#可以替换为任意三个字符
# g表示全局替换，不加只替换第一个

# 替换 9998888 为空
sed -i 's#9998888##g' assaes.log

# 替换 “记录” 为 “行”
sed -i 's#记录#行#g' assaes.log

# 把字符串使用书名号括起来，输出：《开学》
echo '开学' | sed -r 's#(.*)#《\1》#g'

# 位置调换，输出：兴武 李
echo '李 兴武' | sed -r 's#^(.*) (.*)$#\2 \1#g'

# 取出网卡ip，输出：10.8.16.2
ip a s eth0 | sed -n '3p' | sed -r 's#(.*t )(.*)(/.*$)#\2#g'

# 取出文件 /etc/hosts 的权限
stat /etc/hosts | sed -n '4p' | sed -r 's#^.*\(0(.*)/-.*$#\1#g'
# 或者直接使用
stat -c%a /etc/hosts